package com.demo.common.swagger.annotation;

import com.demo.common.support.model.DataResponse;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 注解表识此接口通过{@link DataResponse}进行返回
 *
 * @author molong
 * @since 2024/6/11
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiDataResponse {

    /**
     * 返回具体实例参数
     *
     * @return 参数class对象
     */
    Class<?> responseType() default Void.class;

    /**
     * 正常返回http状态
     *
     * @return the number of http status code
     */
    int code() default 200;

    /**
     * 返回消息体
     *
     * @return status phrase
     */
    String message() default "OK";

    /**
     * 是否为分页
     *
     * @return return {@code true} as pageable response,otherwise {@code false}
     */
    boolean pageable() default false;

    /**
     * 是否是一个集合{@link java.util.Collection}
     * 如果 {@link #pageable()} 设置的是<code>true</code>,则此参数无效
     *
     * @return 集合返回的是datas, 对象返回的是data
     */
    boolean collectable() default false;

}

